<?php

class AuthController extends Zend_Controller_Action
{
    public function init(){
        
    }
    public function loginAction (){        
        $login_form=new Default_Form_Login();
        $this->view->loginForm = $login_form;
        if ($this->_request->isPost()){                        
            $loginForm_data = $this->_request->getPost();         
            if($login_form->isValid($loginForm_data)){                
                $adapter = new Zend_Auth_Adapter_DbTable(NULL,'user','username','password','MD5(?)');                                     
                $usn = $this->_request->getParam('username');
                $pas = $this->_request->getParam('password');                        
                $adapter->setIdentity($usn);
                $adapter->setCredential($pas);
                $auth = Zend_Auth::getInstance();
                $auth->setStorage(new Zend_Auth_Storage_Session(SESSION_NAMESPACE.'_default'));                                                   
                $result = $auth->authenticate($adapter);                                                           
                if ($result->isValid()){
                    $modelUser = new Default_Model_User();                                                                               
                    $userCheck = $modelUser->getDataByUsername($usn);                                                                                                                                                                                 
                    if($userCheck->status == 1){                        
                        $auth->getStorage()->write(array('username'=>$userCheck['username'],'userId'=>$userCheck['id']));
                        $modelUser->updateLogin($userCheck['id']);                      
                        $this->view->flag = 'success';
                        $this->view->mess = 'Login thành công!';                                                                    
                        return;                         
                    }else{                        
                        $auth->clearIdentity();
                        $this->view->flag='error';                                        
                        $this->view->mess='Tài khoản của bạn tạm khoá. Vui lòng kiểm tra Email để kích hoạt tài khoản!';
                        $this->view->loginForm_data = $loginForm_data;                        
                        //$this->_forward('index','index','default');       
                    }                                                                                                                        
                }else{                                                            
                    $this->view->flag = 'alert';
                    $this->view->mess = 'Username hoặc mật khẩu không đúng!';                    
                    $login_form->populate($loginForm_data);   
                    return;                                             
                }
            }                                                                                                     
        }                  
    }    
    public function regisAction(){
        $regis_form=new Default_Form_Regis();
        $this->view->regis=$regis_form;
        if($this->_request->isPost()){
            $form_data = $this->_request->getPost(); 
            $captcha=$form_data['captcha'];
            $captchaSession = new Zend_Session_Namespace('Zend_Form_Captcha_'.$captcha['id']);
            if($captchaSession->word == $captcha['input']){
                if($regis_form->isValid($form_data)){
                    
                    $addData['username']    = $form_data['username'];
                    $addData['email']       = $form_data['email'];
                    $addData['password']    = md5($form_data['password']);
                    $addData['mobile']      = $form_data['mobile'];
                    $addData['fullname']    = $form_data['fullname'];
                    $addData['address']     = $form_data['address'];
                    $addData['join']        = time(); 
                    $addData['status']      = 1;
                    
                    $modelUser=new Default_Model_User(); 
                    
                                   
                    $emailCheck=$modelUser->getDataByEmail($addData['email']);           
                    $usnCheck  = $modelUser->getDataByUsername($addData['username']);
                    $mobileCheck = $modelUser->getDataByMobile($addData['mobile']);
                    if(!$emailCheck && !$usnCheck && !$mobileCheck){
                        $userId=$modelUser->addData($addData);                                            
                        if($userId){
                            //$email=$addData['email'];
                            //$str=$userId.$email;                                       
                            //$random=md5($str);                                               
                            //$modelUser->updateData(array('random'=>$random),$userId);                                                                                                
                            //$url=BASE_URL.'default/auth/confirm/hash/'.$random;                                                                                   
                            //$this->activeAction($email,$url); 
                            $this->view->flag='success';
                            $this->view->mess = 'Đăng ký thành công!';                                                                    
                            return;                        
                        }else{
                            $this->view->flag='error';
                            $this->view->mess = "Đã có lỗi xảy ra. Vui lòng thử lại!";
                            $regis_form->populate($form_data);   
                            return;
                        }
                    }else{
                        $this->view->flag='alert';
                        $mess='';
                        if($emailCheck){
                            $mess = $mess.'Email '.$addData['email'].' đã đăng ký tại hệ thống!<br/>';
                        }
                        if($usnCheck){
                            $mess = $mess.'Tên đăng nhập này đã tồn tại '.$addData['username'].' đã đăng ký tại hệ thống!<br/>';
                        }
                        if($mobileCheck){
                            $mess = $mess.'Số điện thoại này '.$addData['mobile'].' đã đăng ký tại hệ thống!</br>';
                        }                        
                        $this->view->mess=$mess;
                        $regis_form->populate($form_data);   
                        return;                        
                    }                                                                                                                                                                       
                }else{                
                    $this->view->flag='error';                                        
                    $this->view->mess='Bạn chưa điền đầy đủ thông tin!';
                    $regis_form->populate($form_data);   
                    return;               
                }
            }else{
                $this->view->flag='alert';                                        
                $this->view->mess='Mã xác nhận không chính xác! Vui lòng nhập lại !!!';                    
                $regis_form->populate($form_data);   
                return; 
            }                                    
        }                  
    }    
    public function logoutAction(){                                                
        $this->_helper->layout()->disableLayout(true);
        $this->_helper->viewRenderer->setNoRender(true);
        My_Authuser::logout();
        $this->_helper->redirector('index', 'index', 'default');
        exit;                    
    }    
    public function confirmAction(){        
        $hash=$this->_request->getParam('hash');                
        $modelUser=new Default_Model_User();    
        $user=$modelUser->getDataConfirm($hash);                
        if($user){
            $modelUser->updateStatus($user['userId']);
            $this->view->flag='success';                                        
            $this->view->mess='Kích hoạt tài khoản thành công! Hãy đăng nhập để tiếp tục mua hàng nhé !';
            $this->_forward('index','auth','default');    
        }else{
            $this->view->flag='alert';                                        
            $this->view->mess='Kích hoạt tài khoản không thành công!';
            $this->_forward('index','auth','default');
        }                                               
    }
    public function activeAction($email,$url){
        $your_name = 'Customer Service';
        $your_email = 'khoale.edu@gmail.com'; //Or your_email@gmail.com for Gmail
        $your_password = '741963456';
        $send_to_name = '';
        $send_to_email = 'khoale.193@gmail.com';
        
        //SMTP server configuration
        $smtpHost = 'smtp.gmail.com';
        $smtpConf = array(
            'auth' => 'login',
            'ssl' => 'ssl',
            'port' => '465',
            'username' => $your_email,
            'password' => $your_password
        );
        $transport = new Zend_Mail_Transport_Smtp($smtpHost, $smtpConf);

        //Create email
        $mail = new Zend_Mail('UTF-8');                                 
        $mail->setFrom($your_email, $your_name);
        $mail->addTo($send_to_email, $send_to_name);
        $mail->setSubject('Xác nhận đăng ký thành công');
        $mail->setBodyHtml('<table><tr>Link kích hoạt tài khoản: </tr><tr>Le Anh Khoa</tr></table>');
        //$mail->setBodyText('Link kích hoạt tài khoản: '.$url);
                          
        //Send
        $sent = true;
        try {            
            $mail->send($transport);
        }
        catch (Exception $e) {
            $sent = false;
        }
        $this->_forward('index','index','default');
    }
    
}